package objetos.aeronaves.enemigos;

import java.util.ArrayList;
import movimiento.Posicion;
import objetos.aeronaves.FabricaAeronaves;
import ar.uba.fi.algo3.titiritero.ObjetoVivo;

/*
 * Clase que modela un grupo de cazas enemigos.
 * La cantidad de cazas en el grupo se setea cambiando cantidadCazas. 
 */
public class GrupoCaza implements ObjetoVivo {
	private ArrayList<Caza> cazas;
	private final int cantidadCazas = 3;

	public GrupoCaza() {
		/* Se a�ade 1 por defecto */
		this.cazas.add(FabricaAeronaves.crearCaza());
		for (int i = 1; i < this.cantidadCazas; i++) {
			this.cazas.add(FabricaAeronaves.crearCaza());
		}
	}

	public GrupoCaza(Posicion posicion) {
		this();
		ubicarGrupo(posicion);
	}

	public GrupoCaza(int x, int y) {
		this(new Posicion(x, y));
	}

	@Override
	public void vivir() {
		for (Caza caza : this.cazas) {
			caza.vivir();
		}
	}

	/*
	 * Ubica al grupo en forma de V, el primero en la posicion dada y el resto
	 * detras de el en formacion.
	 */
	public void ubicarGrupo(Posicion posicionLider) {
		Caza lider = this.cazas.get(0);
		lider.setPosicion(posicionLider);
		Caza caza;
		for (int i = 1; i < this.cantidadCazas; i++) {
			caza = this.cazas.get(i);
			int x = lider.getPosicion().getEnX();
			int y = lider.getPosicion().getEnY();
			if (i % 2 == 0) {
				/* Los pares se ubican a la derecha */
				x += 2 * i;
				y -= 2 * i;
			} else {
				/* Los impares a la izquierda */
				x -= 2 * (i + 1);
				y -= 2 * (i + 1);
			}
			caza.setPosicion(new Posicion(x, y));
		}
	}

}
